package com.itheima.d6_generics_class;

public class Test {
    public static void main(String[] args) {
        // 目标：掌握泛型类的定义和使用。
        //不使用泛型的时候,意思就是没有约束。泛型提供了在编译阶段约束所能操作的数据类型。泛型的本质：把具体的数据类型作为参数传给类型变量。
        MyArrayList list = new MyArrayList();
     /*   list.add();     不使用泛型的话，get和add方法的泛型变量都是object类型
        list.get();*/

        //使用泛型，就会把String数据类型送给类型变量E
        MyArrayList<String> list1 = new MyArrayList<>();
        list1.add1("java1");
        list1.add1("java2");
        String ele = list1.get1(1);
        System.out.println(ele);

        MyClass2<Cat, String> c2 = new MyClass2<>();
        c2.put(new Cat(),"泛型有点抽象");


        // MyClass3<String> c3 = new MyClass3<>(); // 报错
        MyClass3<Animal> c4 = new MyClass3<>();
        MyClass3<Dog> c5 = new MyClass3<>();
        MyClass3<Animal> c6 = new MyClass3<>();
        MyClass3<Cat> c7 = new MyClass3<>();
    }
}


